李守中

KVM 相关

Table of Contents

1. 通用的性能优化

1.1. 直通物理硬盘

sudo virsh list --inactive 找到需要配置的机器,执行 sudo virsh edit <vm_name> 来编辑配置文件。

devices 块内有硬盘配置,大概长这样:

<devices>
  <disk type='file' device='disk'>
    <driver name='qemu' type='qcow2'/>
    <source file='/var/lib/libvirt/images/WinSv2019.qcow2'/>
    <target dev='vda' bus='virtio'/>
    <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
  </disk>
  <!-- ... -->
  <!-- a lot of config -->
  <!-- ... -->
</devices>

在这部分下面加入新的硬盘配置,加好之后大概长这样:

<devices>
  <disk type='file' device='disk'>
    <driver name='qemu' type='qcow2'/>
    <source file='/var/lib/libvirt/images/WinSv2019.qcow2'/>
    <target dev='vda' bus='virtio'/>
    <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
  </disk>

  <!-- disk passthrough example start -->
  <disk type='block' device='disk'>
    <driver name='qemu' type='raw'/>
    <source dev='/dev/disk/by-id/ata-Hitachi_HUS724040ALE641_PAJL9L0X'/>
    <target dev='vdb' bus='virtio'/>
  </disk>
  <!-- disk passthrough example end -->

  <!-- ... -->
  <!-- a lot of config -->
  <!-- ... -->
</devices>

1.2. 网卡配置

网卡性能依清单递减:

  • (Linux,perf) 对应 virtio 驱动。
  • PCI 对应 e1000e 驱动。
  • legacy PCI 对应 e1000 驱动。
  • legacy 对应 rtl8139 驱动。

2. 备份与导入 Guest

2.1. 备份 Guest

第一步,关闭 Guest。

执行 virsh list --all 查看 Host 上都有哪些 Guest。

virsh shutdown <vm_name> 关闭需要备份的 Guest。

最后执行 virsh list --all 检查 Guest 是否已经被关闭。

第二步,备份 Guest 配置文件。

KVM Guest 的配置可以由 virsh dumpxml <vm_name> 得到。

执行 virsh dumpxml <vm_name> > /opt/kvm_backup/<vm_name>.xml 备份配置文件。

第三步,备份 Guest 磁盘文件。

执行 virsh domblklist <vm_name> 可以找到 Guest 磁盘文件的位置。默认的位置为 /var/lib/libvirt/images。

执行 cp /var/lib/libvirt/images/<vm_disk_name>.qcow2 /opt/kvm_backup 复制即可完成备份。

最后可以执行 virsh undefine <vm_name> 取消注册被备份的虚拟机。

2.2. 导入 Guest

virsh list --all 查看虚拟机列表,确保当前虚拟机和要导入的虚拟机不存在名称冲突。

先将磁盘文件放到备份时的路径下,再用配置文件重新生成虚拟机即可:

  1. 复制 Guest 磁盘文件到指定路径下 cp /opt/kvm_backup/<vm_disk_name>.qcow2 /var/lib/libvirt/images/
  2. 导入虚拟机的配置文件 virsh define --file /opt/kvm_backup/<vm_name>.xml

导入后,执行 virsh start <vm_name> 即可启动 Guest。



Last Update: 2023-08-13 Sun 14:32

Generated by: Emacs 28.2 (Org mode 9.5.5)   Contact: [email protected]

若正文中无特殊说明,本站内容遵循: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议